package com.ruoyi.shop.brand.service;

import com.ruoyi.shop.api.domain.CarInfo;

import java.util.List;


/**
 * 用户车辆Service接口
 *
 * @author ruoyi
 * @date 2025-02-24
 */
public interface ICarInfoService
{
	/**
	 * 查询用户车辆
	 * 查询策略：优先从Redis缓存获取，如未命中则从数据库查询并更新缓存
	 *
	 * @param id 用户车辆主键
	 * @return 用户车辆
	 */
	public CarInfo selectCarInfoById(Long id);

	/**
	 * 查询用户车辆列表
	 * 查询策略：优先从Redis缓存获取，如未命中则从数据库查询并更新缓存
	 *
	 * @param carInfo 用户车辆查询条件
	 * @return 用户车辆集合
	 */
	public List<CarInfo> selectCarInfoList(CarInfo carInfo);

	/**
	 * 新增用户车辆
	 * 操作策略：新增数据库记录后，清除相关缓存
	 *
	 * @param carInfo 用户车辆信息
	 * @return 结果
	 */
	public int insertCarInfo(CarInfo carInfo);

	/**
	 * 修改用户车辆
	 * 操作策略：更新数据库记录后，清除相关缓存
	 *
	 * @param carInfo 用户车辆信息
	 * @return 结果
	 */
	public int updateCarInfo(CarInfo carInfo);

	/**
	 * 批量删除用户车辆
	 * 操作策略：删除数据库记录后，清除相关缓存
	 *
	 * @param ids 需要删除的用户车辆主键集合
	 * @return 结果
	 */
	public int deleteCarInfoByIds(Long[] ids);

	/**
	 * 删除用户车辆信息
	 * 操作策略：删除数据库记录后，清除相关缓存
	 *
	 * @param id 用户车辆主键
	 * @return 结果
	 */
	public int deleteCarInfoById(Long id);

	/**
	 * 更新用户所有车辆的默认状态
	 * 操作策略：更新数据库记录后，清除相关缓存
	 * 
	 * @param carInfo 包含用户ID和默认状态的对象
	 * @return 更新结果
	 */
	public int updateDefaultByUid(CarInfo carInfo);
}
